package admin;

import java.sql.Date;
import java.util.*;
import model.*;

import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.actions.*;
import org.apache.struts.upload.*;

import util.*;



/*
********************CommunityInsertAction 설명************
* Action을 상속받은 Action클래스. 
* excute() 메서드를 가지고 있음. 커뮤니티생성용
**********************************************************
*/
public class CommunityInsertAction extends DispatchAction{
	
	public ActionForward init(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception {
		
		//Form취득
		CommunityInsertForm cif = (CommunityInsertForm)form;
		
		
		//커뮤니티 기본정보&카테고리 정보취득----------------------------
		String cono = req.getParameter("cono");
		CommunityDAO cDAO = new CommunityDAO();
		Community cm  = null;
		cm = cDAO.getCommunity(cono);
		System.out.println(cm.getConame());
		
		cif.setCono(cono);
		cif.setConame(cm.getConame());
		cif.setCoguide(cm.getCoguide());
		cif.setMastername(cm.getMasterid()+"("+cm.getMasternickname()+")");
		
		CommunityCategoryDAO ccDAO = new CommunityCategoryDAO();
		Vector<CommunityCategory> ca = ccDAO.getList();
		
		cif.setCategorys(ca);
		//------------------------------------------------------
		
		return mapping.findForward("form");
	}
	
	public ActionForward insert(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception {
	
		//Form취득
		CommunityInsertForm cif = (CommunityInsertForm)form;
		Community cm = new Community();
		
		int cono ;
		String coname = null;		//커뮤니티 이름
		int coopen;					//공개 비공개
		String copoptext = null;	//팝업텍스트
		int copopwidth;				//핍업텍스트창 사이즈 넓이
		int copopheight;			//팝업텍스트창 사이즈 높이
		String coguide = null;		//커뮤니티 설명
		int ccno;					//커뮤니티 종류
		FormFile logofile ;			//로고파일
		String cologoofn = null;	//원래이름
		String cologosfn = null;	//저장이름
		
		//커뮤니티 이름
		coname = cif.getConame();
		//공개 비공개
		coopen = Integer.parseInt(cif.getCoopen());					
		//팝업텍스트
		copoptext = cif.getCopoptext();	
		//핍업텍스트창 사이즈 넓이
		copopwidth = Integer.parseInt(cif.getCopopwidth());			
		//팝업텍스트창 사이즈 높이
		copopheight = Integer.parseInt(cif.getCopopheight());
		//커뮤니티 설명
		coguide = cif.getCoguide();
		//커뮤니티 종류
		ccno = Integer.parseInt(cif.getCcno_select());	
		
		//==============================================================
		//로고파일
		logofile = cif.getLogofile();		
		
		if(logofile.getFileName().equals(""))
		{
			cologoofn = null;
			cologosfn = null;
		}
		else
		{
			//원래이름
			cologoofn = logofile.getFileName();	
			//저장이름
			cologosfn = FileSaver.save(logofile.getFileName(), logofile.getInputStream());
		}
		
		//필요한 객체들
		Community community = new Community();
		CommunityDAO cDAO = new CommunityDAO();
		CommunityCategoryDAO ccDAO = new CommunityCategoryDAO();
		CommunityLinkDAO clDAO = new CommunityLinkDAO();
		
		//동호회 종류의 입력 유무 확인
		//이건 어떻게 해야될지 모르겠는데.
		//새로운 동호회를 입력했을때 다시 입력 한다.
		if(!cif.getCcno_input().equals(""))
		{
			CommunityCategory cc = new CommunityCategory();
			cc.setCcname(cif.getCcno_input());
			ccDAO.insert(cc);
			cc = ccDAO.getCommunityCategory(cif.getCcno_input());
			ccno = cc.getCcno();
		}
		
		
		community.setCoguide(coguide);
		community.setCoopen(coopen);
		community.setCologosfn(cologosfn);
		community.setCologoofn(cologoofn);
		community.setConame(coname);
		community.setCcno(ccno);
		community.setCopoptext(copoptext);
		community.setCopopwidth(copopwidth);
		community.setCopopheight(copopheight);

		//커뮤니티 등록
		cDAO.insert(community);
		cono = Integer.parseInt(cDAO.getCommunityNo(coname)); 
		
		//커뮤니티 링크등록

		//입력창(링크)의 개수 취득
		int maxIndex = Integer.parseInt(req.getParameter("maxIndex"));
		for(int i=0 ; i < maxIndex ; i++)
		{
			CommunityLink cl = new CommunityLink();
			cl.setCono(cono); //커뮤니티No
			cl.setLinkname(req.getParameter("link_name_"+i));//링크이름 
			cl.setLinkaddress(req.getParameter("link_address_"+i));//링크주소 
			clDAO.insert(cl);
		}
		
		
		//다시 커뮤니티 관리로 돌아간다.
		ActionForward actionforward = new ActionForward();
		actionforward.setPath("/community.do?method=search&search_community="+cono);
		return actionforward;
		
		/*
		 * 2007년 6월 4일
		 * 커뮤니티 관리자도 저장 해야 된다.
		 * */
	}
	
}
